<?php
/**
 * 语言包管理/访问类
 * 
 * ============================================================================
 * 版权所有: (c) 2009-2011，<UEShop Inc>，并保留所有权利。
 * 网站地址: http://www.ueshop.cn
 * ----------------------------------------------------------------------------
 * 这不是一个自由软件！您只能在不用于商业目的的前提下对程序代码进行修改和使用；
 * 不允许对程序代码以任何形式任何目的的再发布。
 * ============================================================================
 * @author cmpan
 * @copyright   Copyright (c) 2009-2011 UEShop Inc. (http://www.ueshop.cn)
 * @license     http://www.ueshop.cn/1_0.txt
 */
class UE_Lang {
	public static $lang = array();
	/**
	 * 语言包的地区语言
	 *
	 * @var string
	 */
	public static $locale = '';

	/**
	 * 添加语言包
	 * 重复的选项将被新的选项替换
	 *
	 * @param string $langFileBase
	 */
	public static function add($langFileBase) {
		$lang = array();
		if (is_file(LANG_DIR. '/'. self::getLocale() . "/$langFileBase.php")) {
			$lang = include LANG_DIR. '/'. self::getLocale() . "/$langFileBase.php";
		} else if(is_file(LANG_DIR. "/zh_CN/$langFileBase.php")) {
		    $lang = include LANG_DIR. "/zh_CN/$langFileBase.php";
		} else {
			return false;
		}
		
		self::$lang = array_merge(self::$lang, $lang);		
	}
	
	/**
	 * 获取语言包的语言元素
	 *
	 * @param string $id
	 * @return string
	 */
	public static function get($id) {
		// 语言包下标大写
		//$id = strtoupper($id);
		return empty(self::$lang[$id]) ? 'undefined' : self::$lang[$id];
	}
	
	/**
	 * 获取所有已定义的语言变量
	 *
	 * @return array
	 */
	public static function getLangs() {
		return self::$lang;
	}
	
	/**
	 * 获取访问用户本地化语言包
	 *
	 * @return string
	 */
	public static function getLocale() {
		if (self::$locale) {
			return self::$locale;
		}
		// User Agent地区设定
		if (!empty($_GET['locale'])) {
			$locale = $_GET['locale'];
		} elseif (!empty($_SESSION['user_locale'])) {
			$locale = $_SESSION['user_locale'];
		} else {
			$locale = cfg('locale');
		}
		
		// 如果该语言包不存在则使用简体中文语言包
		is_dir(LANG_DIR. '/' . $locale) || $locale = 'zh_CN';
		//$locale = 'en_US';
		return self::$locale = $locale;
	}
}